unit MainSearchFr;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls, DBGrids, Buttons, MainFr, DataRecord;

type

  { TMainSearchFrame }

  TMainSearchFrame = class(TMainFrame)
    LocalizarButton: TBitBtn;
    SairButton: TBitBtn;
    ButtonLimpar: TBitBtn;
    dbgridData: TDBGrid;
    PanelEdits: TPanel;
    PanelButtons: TPanel;
    PanelDataSearch: TPanel;
    procedure SairButtonClick(Sender: TObject);
    procedure ButtonLimparClick(Sender: TObject);
    /// Atribui um DataRecord aos campos do frame
    /// @param(Data é o DataRecord com os dados a serem atribuídos)
    procedure SetDataRecord(Data: TDataRecord); override;
  end;

implementation

uses Initializator;

type
  /// Classe para acessar o text do TControl
  TControlField = class(TControl)
  public
    property Text;
  end;

{ TMainSearchFrame }

procedure TMainSearchFrame.ButtonLimparClick(Sender: TObject);
var
  I: integer;
begin
  // Limpa todos os Edits do frame
  for I := 0 to Self.ComponentCount - 1 do begin
    if (Self.Components[I] is TEdit) then
      TEdit(Self.Components[I]).Clear();
  end;
end;

procedure TMainSearchFrame.SetDataRecord(Data: TDataRecord);
var
  I: integer;
begin
  // Percorre todos os componentes do Frame
  for I := 0 to ComponentCount - 1 do begin
    // Verifica se o DataRecord tem um campo com o mesmo nome do componente
    if (Data.getValue(Components[I].Name) <> '') then begin
      // Se tiver atribui o valor deste campo ao componente
      TControlField(Components[I]).Text := Data.getValue(Components[I].Name);
    end;
  end;
end;

procedure TMainSearchFrame.SairButtonClick(Sender: TObject);
begin
  TheControl.BackFrame();
end;

initialization
  {$I mainsearchfr.lrs}

end.
